#!/bin/sh
#
# Copyright (c) 2017-2021 The strace developers.
# All rights reserved.
#
# SPDX-License-Identifier: LGPL-2.1-or-later

if [ "$1" = "-f" ]; then
	shift
	DATE_FORMAT="$1"
	shift
fi

: ${FILE:=$1}
: ${DATE_FILE:=$(dirname "$FILE")/.$(basename "${FILE}").date}
: ${DEFAULT_DATE:=$2}
: ${DATE_FORMAT:=%Y-%m-%d}
LC_TIME=C; export LC_TIME

date=

[ -n "${FILE}" ] || {
	echo >&2 "$0 $(dirname "$0")/file [$(dirname "$0")/file.date [DEFAULT_DATE]]"
	exit 1
}

[ -f "${DATE_FILE}" ] && date="$(cat "${DATE_FILE}")"

[ -n "${date}" ] ||
	date="$(git log -s -n 1 --format=format:%cD "${FILE}")"

[ -n "${date}" ] ||
	date="${DEFAULT_DATE}"

[ -n "${date}" ] ||
	[ -z "${SOURCE_DATE_EPOCH-}" ] ||
	date="$(date -u -d "@${SOURCE_DATE_EPOCH}")"

[ -n "${date}" ] ||
	date="$(date -u)"

[ -n "${date}" ] || {
	printf >&2 "%s: Undefined date.\n" "$0"
	exit 1
}

datestr="$(date -u "+${DATE_FORMAT}" -d "${date}")" &&
[ -n "${datestr}" ] || {
	printf >&2 "%s: Invalid date: %s\n" "$0" "$date"
	exit 1
}

exec printf '%s' "$datestr"
